home *** CD-ROM | disk | FTP | other *** search
/ The Best of Down Under Games / The Best of Down Under Games.iso / 3dfx Screen Savers / VoodooLights / Sources / mat.h < prev    next >
C/C++ Source or Header  |  1997-06-29  |  3KB  |  78 lines

  1. #ifndef _MAT_H
  2. #define _MAT_H
  3.  
  4. #define mat_MAXDIMS    12
  5.  
  6. typedef    Float Vector[ mat_MAXDIMS ] ;
  7.  
  8. typedef Float Matrix[4][4] ;
  9. typedef struct { Float x, y, z ; } XYZ ;
  10. typedef struct { Float x, y, z, w ; } XYZW ;
  11. typedef struct { Float x, y, z, w, r, g, b ; } XYZWRGB ;
  12. typedef struct { Float x, y, z, w, r, g, b, s, t, oow, sow, tow ; } XYZWRGBST ;
  13. typedef struct { Float x, y, z, w, r, g, b, a, s, t, oow, sow, tow ; } XYZWRGBAST ;
  14.  
  15. extern XYZ        xyz_Zero ;
  16. extern XYZW        xyzw_Zero ;
  17.  
  18. #define            mat_direction mat_normalize             
  19.  
  20. extern int        mat_ipow( int b, int e ) ;
  21. extern Float    mat_dotp( XYZ *, XYZ * ) ;                                     
  22. extern void        mat_crossp( XYZ *, XYZ *, XYZ * ) ;                  
  23. extern Float    mat_length( XYZ * ) ;
  24.                                   
  25. extern Float    mat_normalize( XYZ * ) ;                                               
  26. extern void        mat_scalev( Float, XYZ *,  XYZ * ) ;   
  27. extern void        mat_addv( XYZ *, XYZ *, XYZ *) ;      
  28. extern void        mat_subv( XYZ *, XYZ *, XYZ * ) ;       
  29. extern void        mat_combv( Float, XYZ *, XYZ *,  XYZ * ) ; 
  30. extern void        mat_rotv( XYZ *, XYZ *, XYZ *) ;
  31. extern void        mat_printv( XYZ * ) ;      
  32. extern void        mat_printXYZW( XYZW *) ;
  33.  
  34. extern void        mat_randomDir( XYZ * ) ;
  35.  
  36. extern void        mat_multvm( XYZ *, Matrix, XYZ * ) ;
  37. extern void        mat_multvtm( XYZ *,Matrix, XYZ * ) ;
  38.  
  39. extern void        mat_multpm( XYZ *, Matrix, XYZW *) ;
  40. extern void        mat_multpim( XYZ *, Matrix, XYZ * ) ; 
  41.  
  42. extern void        mat_mult_m_XYZp( XYZ *v, Matrix a, XYZ *out ) ;
  43.  
  44. extern void        mat_mult_m_XYZv( XYZ *v, Matrix a, XYZ *out ) ;
  45.  
  46. extern void        mat_mult_m_XYZWp( XYZ *v, Matrix a, XYZW *out ) ;
  47.  
  48. extern void        mat_mult_tm_XYZv(XYZ *v, Matrix a, XYZ *out ) ;
  49.  
  50. extern void        mat_mult_tm_XYZp(XYZ *v, Matrix a, XYZ *out ) ;
  51.  
  52. extern void        mat_summ( Matrix, Matrix, Matrix ) ; 
  53. extern void        mat_subm( Matrix, Matrix, Matrix ) ;   
  54. extern void        mat_multm( Matrix, Matrix, Matrix) ; 
  55. extern void        mat_invm( Matrix, Matrix ) ;
  56. extern Bool        mat_ainvm( Matrix, Matrix ) ;
  57.  
  58.  
  59. extern void        mat_idm( Matrix ) ;
  60.  
  61. extern void        mat_transpose( Matrix, Matrix ) ;
  62. extern void        mat_transl( XYZ *, Matrix ) ;
  63. extern void        mat_scale( XYZ *, Matrix ) ;
  64.  
  65. extern void        mat_rotx( Float, Matrix ) ; 
  66. extern void        mat_roty( Float, Matrix ) ;
  67. extern void        mat_rotz( Float, Matrix ) ;
  68.  
  69. extern void        mat_shearx( Float, Float, Matrix ) ;
  70. extern void        mat_sheary( Float, Float, Matrix ) ;
  71. extern void        mat_shearz( Float, Float, Matrix ) ;
  72.  
  73.  
  74. extern void        mat_printm(char *, Matrix ) ; 
  75.  
  76.  
  77. #endif /* _MAT_H */
  78.